package cn.fl.comm.service;

import java.util.List;

import cmm.comm.facade.flow.condition.SysFlowRejRsnQueryCondition;
import cmm.mid.core.framework.condition.CacheRefreshCdMapQC;
import cmm.mid.core.framework.condition.CacheRefreshCtrlCfgQC;
import cmm.mid.core.framework.condition.CacheRefreshDictionaryQC;
import cmm.mid.core.framework.condition.CacheRefreshRegionQC;
import cmm.mid.core.framework.condition.CacheRefreshStdRegionQC;
import cmm.mid.core.framework.dto.DataResultDTO;
import cmm.mid.core.framework.page.KeyValueVO;
import cmm.mid.core.framework.page.Pager;
import cn.cmm.base.framework.exception.BaseException;

/**
 * 刷新缓存接口
 * @author FUJINGRUN
 */
public interface ICacheRefreshService {
	
	/**
	 * 刷新数据字典缓存->根据系统代码、代码组, 直接根据条件查询缓存获取DB数据
	 * @param sysCd 系统代码
	 * @param orgCd 组织架构代码
	 * @param codeGrpCd 字典组代码
	 * @return DataResultDTO
	 * @throws BaseException
	 */
	public DataResultDTO refreshDictionary(CacheRefreshDictionaryQC qc) throws BaseException;
	
	
	/**
	 * 刷新系统配置缓存->根据系统代码, 直接根据条件查询缓存获取DB数据
	 * @param sysCd 系统代码
	 * @return DataResultDTO
	 * @throws BaseException
	 */
	public DataResultDTO refreshCtrlCfg(CacheRefreshCtrlCfgQC qc) throws BaseException;
	
	/**
	 * 刷新代码映射缓存->根据系统代码, 直接根据条件查询缓存获取DB数据
	 * @param sysCd 系统代码
	 * @param mTypCd 映射类型代码
	 * @return DataResultDTO
	 * @throws BaseException
	 */
	public DataResultDTO refreshCdMap(CacheRefreshCdMapQC qc) throws BaseException;
	
	/**
	 * 刷新省市县缓存->根据系统代码, 直接根据条件查询缓存获取DB数据
	 * @param sysCd 系统代码
	 * @return DataResultDTO
	 * @throws BaseException
	 */
	public DataResultDTO refreshRegion(CacheRefreshRegionQC qc) throws BaseException;
	
	/**
	 * 刷新标准省市县缓存->根据系统代码, 直接根据条件查询缓存获取DB数据
	 * @param sysCd 系统代码
	 * @return DataResultDTO
	 * @throws BaseException
	 */
	public DataResultDTO refreshStdRegion(CacheRefreshStdRegionQC qc) throws BaseException;
	
	/**
	 * 刷新流程驳回原因缓存->根据系统代码、原因分类, 直接根据条件查询缓存获取DB数据
	 * @return DataResultDTO
	 * @throws BaseException
	 */
	public DataResultDTO refreshFlowRejRsn(SysFlowRejRsnQueryCondition qc) throws BaseException;
	
	/**
	 * 查询数据字典-根据系统代码、代码组、代码组名称分组
	 * @param page
	 * @return
	 * @throws BaseException
	 */
	public Pager searchGroupListPage(Pager page) throws BaseException;
	
    /**
     * 服务端系统代码<KEY,VALUE>集合
     * @return <KEY,VALUE>集合
     */
    public List<KeyValueVO> searchServiceSysCdList()throws BaseException;
    
    /**
	 * 查询数据字典详情-根据系统代码、代码组、代码组名称分组
	 * @param page
	 * @return
	 * @throws BaseException
	 */
	public Pager searchDicListInfoPage(Pager page) throws BaseException;
	
}
